<?php
namespace App\Middlewares;

use Core\Middleware;
use Core\Request;
use Core\Response;
use App\Exceptions\AuthenticationException;

class AuthMiddleware extends Middleware {
    public function handle(Request $request, \Closure $next) {
        $token = $request->getHeader('Authorization');
        
        if (!$this->isValidToken($token)) {
            throw new AuthenticationException('Invalid token');
        }
        
        return $next($request);
    }
    
    private function isValidToken($token) {
        // 在实际应用中，这里应该验证JWT token的有效性
        // 例如: 检查签名、过期时间等
        
        // 简单验证示例
        return $token === 'Bearer secret-token';
        
        // 实际应用中可能使用类似这样的验证:
        // if (strpos($token, 'Bearer ') !== 0) {
        //     return false;
        // }
        // 
        // $token = substr($token, 7); // 去掉 "Bearer " 前缀
        // 
        // // 使用JWT库验证token
        // try {
        //     $payload = JWT::decode($token, getenv('JWT_SECRET'), ['HS256']);
        //     return true;
        // } catch (Exception $e) {
        //     return false;
        // }
    }
}